var express = require('express')
var bodyParser = require('body-parser')
var cookie = require('cookie-parser')
var multer = require('multer')
var fs = require('fs')
var web = express()
var form = multer()

web.use(cookie())
web.use(express.static('public'))
web.use(bodyParser.urlencoded({ extended: false }))

var allUser = []
fs.exists('allUsers', function (isExists) {
    if (!isExists) {
        fs.mkdirSync('allUsers')
    }
})
var headerName = ''
var fullName = ''
var headerConfig = multer.diskStorage({
    destination: 'public/allheaders',
    filename: function (req, file, callback) {
        var oldName = file.originalname
        var nameArray = oldName.split('.')
        var type = nameArray[nameArray.length - 1]
        var newName = headerName + '.' + type

        fullName = newName 
        callback(null, newName)
    }
})

var upload = multer({ storage: headerConfig })

web.post('/regist', function (req, res) {
    var name = req.body.name;
    var password = req.body.password
    var again = req.body.again

    if (password != again) {
        res.send('两次密码不一致')
        return
    }
    if (name.length < 6 || password.length < 6) {
        res.send('账号密码长度不能小于6位')
        return
    }


    fs.exists('allUsers/' + name + '.json', function (isExists) {
        if (isExists) {
            res.send('该用户已经注册')
        }
        else {
            fs.writeFile('allUsers/' + name + '.json',
                JSON.stringify(req.body), function (err) {
                    if (err) {
                        res.send('注册失败' + err)
                    }
                    else {
                        res.send('注册成功')
                    }
                })
        }
    })


})
web.post('/login', function (req, res) {
    var name = req.body.name
    var password = req.body.password

    if (name.length < 6 || password.length < 6) {
        console.log('登录状态：账号密码不能少于6位')
        res.send('账号密码不能少于6位')
        return
    }
    fs.exists('allUsers/' + name + '.json', function (isExists) {
        if (!isExists) {
            res.send('该用户尚未注册')
        }
        else {
            fs.readFile('allUsers/' + name + '.json', function (err, data) {
                if (data) {
                    var userJson = JSON.parse(data)
                    if (password == userJson.password) {
                        headerName = name
                        res.cookie('user', name)
                        res.send('登录成功')
                    }
                    else {
                        res.send('密码错误')
                    }
                }
                else {
                    res.send('登录失败')
                }
            })
        }
    })
})
// 上传头像
web.post('/upload', upload.single('photo'), function (req, res) {
    fs.readFile('allUsers/' + require.cookies.user + '.json', function (err, data) {
        if (data) {
            var userJson = JSON.parse(data)
            // 添加新的字段
            userJson.header = fullName

            fs.writeFile('allUsers/' + headerName + '.json',
                JSON.stringify(userJson), function (err) {
                    if (err) {
                        res.send('<script>alert("上传失败");window.location.href="upload.html"</script>')
                    }
                    else {
                        res.send('<script>alert("上传成功");window.location.href="index.html"</script>')
                    }
                })
        }
    })
})

web.get('/myHeader', function (req, res) {
   
    var name = req.cookies.user
    console.log(name)
    if (name) {
        // 读取指定用户名的json信息 json信息里面包含的有用户头像名称
        fs.readFile('allUsers/' + name + '.json', function (err, data) {
            if (data) {
                var userJson = JSON.parse(data)
                header = userJson.header
                // 如果之前上传过头像
                if (header) {
                    res.send(header)
                }
                else {
                    res.send('default.jpg')
                }
            }
            else {
                res.send('default.jpg')
            }
        })
    }
    else {
        res.send('default.jpg')
    }

})

allQuestions = []
fs.exists('questions', function (isExists) {
    if (!isExists) {
        // 如果文件夹不存在则创建
        fs.mkdirSync('questions')
    }
    else {
        fs.readFile('questions/allquestions.json', function (err, data) {
            // 如果文件夹存在 读取文件夹里面json中的所有数据 
            //并且赋值给allquestions
            allQuestions = JSON.parse(data)
        })
    }
})
// 提问
web.post('/questions/ask', function (req, res) {
    // 提问内容
    var content = req.body.content
  
    var name = req.cookies.user
    var time = new Date()
    
    var currentTime = time.getFullYear() + '-' + (time.getMonth() + 1) + '-' +
        time.getDate() + ' ' + time.getHours() + ':' + time.getMinutes()
        + ':' + time.getSeconds()

    var question = {
        name: name,
        time: currentTime,
        content: content
    }

    // 设置用户头像
    fs.readFile('allUsers/' + name + '.json', function (err, data) {
        if (data) {
            var userJson = JSON.parse(data)
            // 如果用户信息里面有 头像字段
            if (userJson.header) {
                question.header = userJson.header
            }
            else {
                question.header = 'default.jpg'
            }
        }
        else {
            question.header = 'default.jpg'
        }

        // 将最新的问题放入到数组当中的第一位
        allQuestions.unshift(question)

        fs.writeFile('questions/allquestions.json',
            JSON.stringify(allQuestions), function (err) {
                if (err) {
                    res.send('提问失败')
                }
                else {
                    res.send('提问成功')
                }
            })

    })

})
// 问题列表
web.get('/questions/list',function(req ,res){
    res.send(allQuestions)
})
// 提交答案
web.post('/questions/answer',function(req ,res){
    var index = req.cookies.index
    var content = req.body.content
    var time = new Date()
    var currentTime = time.getFullYear() + '-' + (time.getMonth() + 1) + '-' +
        time.getDate() + ' ' + time.getHours() + ':' + time.getMinutes()
        + ':' + time.getSeconds()
    var name = req.cookies.user
    var answer = {
        name:name ,
        content:content,
        time:currentTime
    }
    if(!allQuestions[index].answerList)
    {
        allQuestions[index].answerList = []
    }
    


    fs.readFile('allUsers/' + name + '.json',function(err ,data){
        if(data)
        {
            var userJson = JSON.parse(data)
            if(userJson.header){
                answer.header = userJson.header
            }
            else{
                answer.header = 'default.jpg'
            }
        }
        else{
            answer.header = 'default.jpg'
        }
        allQuestions[index].answerList.unshift(answer)
        fs.writeFile('questions/allquestions.json',
        JSON.stringify(allQuestions),function(err){
            if(err){
                res.send('回答失败')
            }
            else{
                res.send('回答成功')
            }
        })

    })
})
web.listen('8080', function () {
    console.log('服务器启动成功~~~~~~~~~~~~~~~~~~~~')
})

